<!DOCTYPE html>
<script src="../../resources/run-after-layout-and-paint.js"></script>
<script>
if (window.testRunner)
  testRunner.waitUntilDone();

window.onload = function() {
  // Wait for a frame, then mutate the filter.
  runAfterLayoutAndPaint(function() {
    var pointLight = document.getElementById('light');
    pointLight.setAttribute('x', '0.5');
    pointLight.setAttribute('y', '0.5');
    pointLight.setAttribute('z', '10');
    // Change primitive units after having updated light position.
    document.querySelector('filter').setAttribute('primitiveUnits', 'objectBoundingBox');
    if (window.testRunner)
      runAfterLayoutAndPaint(function() { testRunner.notifyDone(); });
  });
};
</script>
<svg>
  <filter id="f" x="0" y="0" width="1" height="1">
    <feDiffuseLighting lighting-color="green">
      <fePointLight id="light" x="0" y="0" z="-50"/>
    </feDiffuseLighting>
  </filter>
  <rect width="100" height="100" fill="red" filter="url(#f)"/>
</svg>
